home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
- #
- #
-
- set -e
-
- # Do debconf stuff here
- . /usr/share/debconf/confmodule
-
- TEMPDIR=/var/run/samba/upgrades
- NEWFILE=$TEMPDIR/smb.conf
- CONFIG=/etc/samba/smb.conf
-
- # ------------------------- Debconf questions start ---------------------
-
- configure_smb_conf() {
- local CONFIG
- CONFIG="$1"
-
- # Is the user configuring with debconf, or he/she prefers
- # swat/manual config?
- db_get samba-common/do_debconf || true
- if [ "${RET}" != "true" ]; then
- return 0
- fi
-
- # Get workgroup name
- db_get samba-common/workgroup || true
- WORKGROUP="${RET}"
-
- # Oh my GOD, this is ugly. Why would anyone put these
- # characters in a workgroup name? Why, Lord, why???
- WORKGROUP=`echo $WORKGROUP | \
- sed -e's/\\\\/\\\\\\\\/g
- s#/#\\\\/#g
- s/&/\\\&/g
- s/\\\$/\\\\\\\$/g'`
-
- sed -i -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
- /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
- s/^\([[:space:]]*\)workgroup[[:space:]]*=.*/\1workgroup = ${WORKGROUP}/i" \
- "$CONFIG"
-
- # Encrypt passwords?
- db_get samba-common/encrypt_passwords || true
- ENCRYPT_PASSWORDS="${RET}"
-
- sed -i -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
- /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
- s/^\([[:space:]]*\)encrypt passwords[[:space:]]*=.*/\1encrypt passwords = ${ENCRYPT_PASSWORDS}/i" \
- "$CONFIG"
-
- # Install DHCP support
- db_get samba-common/dhcp
- if [ "$RET" = true ] && \
- ! grep -q dhcp.conf "$CONFIG"
- then
- sed -i -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
- /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ {
- /wins server[[:space:]]*=/a \\
- \\
- # If we receive WINS server info from DHCP, override the options above. \\
- include = /etc/samba/dhcp.conf
- }" "$CONFIG"
- elif [ "$RET" != true ]; then
- sed -i -e '
- /^#[[:space:]]*If we receive WINS server info from DHCP, override the options above/d
- /^#*[[:space:]]*include[[:space:]]*=[[:space:]]*\/etc\/samba\/dhcp.conf/,/[^[:space:]]/ {
- /^#*[[:space:]]*include[[:space:]]*=[[:space:]]*\/etc\/samba\/dhcp.conf/d
- /^[[:space:]]*$/d
- }' "$CONFIG"
- fi
-
- if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.0.23b-2 \
- && grep -qi "^[[:space:]]*passdb backend[[:space:]]*=.*guest" "$CONFIG"
- then
- sed -i -e "s/^\([[:space:]]*\)\[global\]/\1\[global\]/i
- /^[[:space:]]*\[global\]/,/^[[:space:]]*\[/ \
- s/^\([[:space:]]*passdb backend[[:space:]]*=[^,]*\),\?[[:space:]]*guest[[:space:]]*$/\1/i" \
- "$CONFIG"
- fi
- }
-
-
- if [ -e "$CONFIG" ]; then
- configure_smb_conf "$CONFIG"
- fi
-
- mkdir -p "$TEMPDIR"
-
- if [ -n "$2" ] && dpkg --compare-versions "$2" lt 3.0.28-3; then
- if dpkg --compare-versions "$2" lt 3.0.26a-1 && [ "$2" != "${2%ubuntu*}" ]
- then
- base=dapper
- elif [ "$2" != "${2%ubuntu*}" ]
- then
- if [ -e "${CONFIG}" ]
- then
- if grep -q '; winbind enum groups = yes' ${CONFIG}
- then
- base=gutsy
- elif grep -q '# /usr/share/doc/samba-doc/htmldocs/Samba3-HOWTO/ServerType.html' ${CONFIG}
- then
- base=feisty
- else
- base=dapper
- fi
- else
- base=gutsy
- fi
- else
- base=etch
- fi
-
- TEMPLATE=/usr/share/samba/smb.conf.${base}
-
- cp "$TEMPLATE" "$NEWFILE"
- configure_smb_conf "$NEWFILE"
-
- if [ -e "$CONFIG" ]; then
- sed -e '1,/^[;#[:space:]]*\[cdrom\]/ { d }
- 1,/^[[:space:]]*\[/ { /^[^[]/d; /^$/d }
- ' "$CONFIG" >> "$NEWFILE"
- fi
-
- ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
- fi
-
- cp /usr/share/samba/smb.conf "$NEWFILE"
- configure_smb_conf "$NEWFILE"
-
- if [ -e "$CONFIG" ]; then
- sed -e '1,/^[;#[:space:]]*\[cdrom\]/ { d }
- 1,/^[[:space:]]*\[/ { /^[^[]/d; /^$/d }
- ' "$CONFIG" >> "$NEWFILE"
- fi
-
- ucf --three-way --debconf-ok "$NEWFILE" "$CONFIG"
- ucfr samba-common "$CONFIG"
-
- chmod a+r "$CONFIG"
-
- # ------------------------- Debconf questions end ---------------------
-
- db_stop
-
-
-